package com.wrupple.muba.widget.client.activity;

import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;
import com.wrupple.muba.widget.client.view.Task;

/**
 * An Activity Presenter provides control over how each step of a Workflow is
 * Presented.
 * 
 * This principle is the basis of the funtionality behind Having Data-oriented
 * records of what a wrokflow is. A Workflow is a series of steps that can be
 * described and that description can be saved and interpreted to reproduce the
 * activity with equal results given the same input.
 * 
 * Each of the workflow's steps requires some user interaction following some
 * predefined logical series of desicions that take place on a widget.
 * 
 * Implementing clases control the logical flow of user activities.
 * 
 * @author japi
 * 
 */
public interface ActivityPresenter extends IsWidget {
	
	AcceptsOneWidget getOutputFeature();

	Widget getCurrentWidget();

	void restore(Task<?, ?> task);

	void setEventBus(EventBus eventbus);
	
}